package com.archerdu.base.dao;

import java.io.Serializable;
import java.util.List;

import org.dom4j.Element;

/**
 * 树形结构接口方法
 * 
 * @projectName springDemo
 * @description 树形结构接口方法
 * @author archer du
 * @createDate 2013年9月27日 下午5:28:10
 * @updateUser dxf
 * @updateDate 2013年9月27日 下午5:28:10
 * @updateRemark 新建
 * @version 0.0.1
 */
public interface TreeNode<E extends Serializable, K extends Serializable> extends BaseEntity<K> {

    /** 根元素 */
    String ROOT      = "root";
    /** 节点元素 */
    String ITEM      = "item";
    /** 主键 */
    String ID        = "id";
    /** 元素名称 */
    String NAME      = "name";
    /** 节点描述 */
    String NOTE      = "note";
    /** 节点类型 */
    String TYPE      = "type";
    /** 节点层级 */
    String LEV       = "lev";
    /** 父节点主键 */
    String PARENT_ID = "parentId";

    /**
     * 获取子目录
     * 
     * @return
     */
    List<E> getChildren();

    /**
     * 添加子目录节点
     * 
     * @param children
     */
    void setChildren(List<E> children);

    /**
     * 节点转为xml元素
     * 
     * @param ele
     */
    void toElement(Element ele);

    /**
     * 获取目录层级
     * 
     * @return
     */
    Integer getLev();

    /**
     * 设置目录层级
     * 
     * @param lev
     */
    void setLev(Integer lev);

    /**
     * 获取目录上级编码
     * 
     * @return
     */
    String getCode();

    /**
     * 设置目录上级编码
     * 
     * @param code
     */
    void setCode(String code);

}
